type T = [...['a', 1, string], ...any[], args: string[][]]

type T1 = T[0]
type T2 = T[0|5] 
type T3 = T[0] | T[5]
// T2 等价于 T3, 实际计算过程如 T4所示
type T4 = 'a' | any


// 提取数组最后一个元素的类型
type T5 = T extends [...any[], infer Last] ? Last : never;

// 提取数组第一个元素的类型
type T6 = T extends [infer First, ...any[]] ? First : never;
// 或者
type T7 = T extends [] ? never : T[0]
